package com.jack.payment.service.alipay;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.AlipayConfig;
import com.jack.payment.entity.business.RequestPayBo;
import com.jack.payment.entity.generate.config.ConfigPayAliModel;
import com.jack.payment.entity.result.ResultPayVo;

public interface AliPaymentMethodService {
    /**
     * 配置支付宝请求客户端配置配置数据信息
     * @return
     */
    AlipayConfig setAliPaymentClientConfig(ConfigPayAliModel configPayAliModel);

    /**
     * 创建支付宝二维码 当面支付方式
     * @param paymentAttachModel 请求支付时的参数
     * @param webhook  回调地址
     * @Param paymentModuleDifferentType 支付所使用的模式
     * @param client  请求支付宝  配置好的客户端
     * @return
     */
    ResultPayVo createAliQrcodePayInfo(RequestPayBo requestPayBo,
                                       String webhook,
                                       Integer payUseModule,
                                       AlipayClient client) throws AlipayApiException;

    /**
     * 创建支付宝 web 端 支付方式
     * @param paymentAttachModel 请求支付时的参数
     * @param webhook  回调地址
     * @param client  请求支付宝  配置好的客户端
     * @return
     */
    ResultPayVo createAliWebPayInfo(RequestPayBo requestPayBo,
                                    String webhook,
                                    Integer payUseModule,
                                    AlipayClient client) throws AlipayApiException;

    /**
     * 创建支付宝 App(Android, iOS) 支付方式
     * @param paymentAttachModel 请求支付时的参数
     * @param webhook  回调地址
     * @param client  请求支付宝  配置好的客户端
     */
    ResultPayVo createAliAppPayInfo(RequestPayBo requestPayBo,
                                    String webhook,
                                    Integer payUseModule,
                                    AlipayClient client) throws AlipayApiException;

}
